/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmFacultad;


import educar.models.Facultad;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;



/**
 * <hr>
 * Clase AgregarFacultadController: En esta clase se encuentran los metodos  
 * necesarios para agregar una facultad tanto a la base de datos como a la tabla.
 * <hr>
 * @author gaston
 */
public class AgregarFacultadController implements ActionListener, WindowListener{
       
    //Atributo usado para crear una ventana
    private AgregarFacultadView agregarFacultadView;
    
    //Arreglo usado para almacenar los datos de la facultad
    private String vector[] = new String[2];
    
    //Atributo usado para crear una instancia de facultadController
    private FacultadController facultadControl;

    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * AgregarFacultadController(): Constructor de la clase AgregarFacultadController
     * <hr>
     * @param facultadController 
     */
    public AgregarFacultadController(FacultadController facultad){        
        facultadControl = facultad;
        agregarFacultadView = new AgregarFacultadView();
        agregarFacultadView.setActionListener(this);
        agregarFacultadView.setWindowListener(this);
    }
 // </editor-fold>

// <editor-fold defaultstate="collapsed" desc="//Action setView">    
    /**
     * <hr>
     * setView(): Este metodo hace visible a una ventana.
     * <hr>
     */
    public void setView() {
        agregarFacultadView.setVisible(true);
    }
// </editor-fold>  

// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">
    @Override
    /**
     * <hr>
     * actionPerformed(): Este metodo recibe el evento de un boton.
     * Boton CANCELAR cierra la ventana.
     * Boton AGREGAR agrega la facultad a la base de datos y a la tambla.
     * <hr>
     */
    public void actionPerformed(ActionEvent e) {
        
        //Evalua la procedencia del evento del boton
        Object source = e.getSource();
        if (agregarFacultadView.getJbCancelar() == source){ //Cancelar
            agregarFacultadView.dispose();//Cierra la ventana
        }
        if (agregarFacultadView.getJbAgregar() == source){ //Agregar 
            
            if (!((agregarFacultadView.getCodigoFacultad().length() == 0) || (agregarFacultadView.getNombreFacultad().length() == 0) )) {
                Facultad facultad = new Facultad(agregarFacultadView.getCodigoFacultad(),agregarFacultadView.getNombreFacultad());
                if (facultad.save()) { 
                    vector[0] = agregarFacultadView.getCodigoFacultad();
                    vector[1] = agregarFacultadView.getNombreFacultad();
                    
                    facultadControl.agregarATabla(vector);
                    agregarFacultadView.dispose();
                } 
                else { //La facultad ya existe
                    JOptionPane.showMessageDialog(null,"Ya existe un registro con el nombre de facultad "+ agregarFacultadView.getNombreFacultad()+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            }
            else { //No se ingresaron todos los datos de la facultad
                JOptionPane.showMessageDialog(null,"Existe al menos un campo de facultad sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    }//Fin del metodo actionPerformed().
    
// </editor-fold>

    
// <editor-fold defaultstate="collapsed" desc="Metodos ActionPerformed no usadas">
    @Override
    public void windowOpened(WindowEvent e) {

    }

    
    @Override
    public void windowClosing(WindowEvent e) {

    }

    
    @Override
    public void windowClosed(WindowEvent e) {

    }

    
    @Override
    public void windowIconified(WindowEvent e) {

    }

    
    @Override
    public void windowDeiconified(WindowEvent e) {

    }

    
    @Override
    public void windowActivated(WindowEvent e) {

    }

    
    @Override
    public void windowDeactivated(WindowEvent e) {

    }
    
// </editor-fold>   

}//Fin de la clase AgregarFacultadController